I'm trying to make setArray remove spaces and punctuation from my array. But it seems like as soon as it encounters a space the while loop is exiting out. Is a blank the space the same as '\o' ?
I'm using "a man a plan canal panama" as my palindrome.
Code:#include <stdio.h> int testPalindrome(char[], int, int); void setArray(char[]); int main() { char string[ 25 ]; int arraySize = 15, nSize = 15; scanf("%s", &string); setArray( string ); /* Test Statement */ printf("%s\n", string); while( string[ arraySize - 1 ] != '\0' ) { --arraySize; printf("arraySize: %d\n", arraySize); } --arraySize; nSize = arraySize - 1; printf("arraySize: %d nSize: %d\n", arraySize, nSize); printf("%d\n", testPalindrome(string, nSize, arraySize) ); return 0; } void setArray(char theArray[]) { int n = 0; int i; while (theArray[ n ] != '\0') { if (theArray[ n ] == ' ' || theArray[ n ] == '.' || theArray[ n ] == '?') { i = n; while (theArray[ i ] != '\0' ) { theArray[ i ] = theArray[ i + 1 ]; ++i; } theArray[ i ] = theArray[ i + 1 ]; } ++n; } return; } int testPalindrome(char array[], int n, int size) { if (size % 2 == 1 && (size - 1) / 2 == n ) { // TEST STATEMENT printf("if 1 n: %d\n", n); return 1; } else if (size % 2 == 0 && (size - 1) / 2 == n) { // TEST STATEMENT printf("if 2 n: %d\n", n); if (array[ n ] == array[ size - n ]) return 1; else return 0; } else { // TEST STATEMENT printf("if 3 n: %d\n", n); if (array[ n ] == array[ size - n - 1 ]) return testPalindrome(array, n - 1, size); else return 0; } }


.